package webbrow.board.reply.model;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import webbrow.board.component.BoardReplyDao;
import webbrow.board.component.BoardReplyService;
import webbrow.board.vo.BoardReplyVO;

public class BoardReplyServiceImpl implements BoardReplyService {
	
	private BoardReplyDao boardReplyDao;
	public BoardReplyServiceImpl(BoardReplyDao boardReplyDao){
		this.boardReplyDao=boardReplyDao;
	}

	/**
	 * 댓글을 삭제하는 메소드
	 * @Transactional 을 이용해서 ReportList가 삭제되지 않으면 댓글을 삭제하지 못하도록 함
	 */
	@Override
	@Transactional
	public void deletePost(int re_no) throws Exception {
		boardReplyDao.deleteReplyReportHistory(re_no);//댓글에 달린 신고목록 삭제
		boardReplyDao.deleteReply(re_no);//댓글 삭제
	}

	/**
	 * 댓글 내용을 DB에 입력하는 메소드
	 */
	@Override
	public void writeReply(BoardReplyVO rvo) throws Exception {
		boardReplyDao.insertReply(rvo);
	}
	
	/**
	 * 글번호 no에 달린 모든 댓글 리스트를 받아오는 메소드
	 */
	public List<BoardReplyVO> getReplyList(int no) throws Exception {
		return boardReplyDao.selectReplyList(no);
	}
	
	/**
	 * re_no 댓글 번호를 매개변수로 업데이트를 위해 댓글 상세 정보를 받아오는 메소드
	 */
	@Override
	public BoardReplyVO getReplybyReNo(int re_no) throws Exception {
		return boardReplyDao.selectReplyByReNo(re_no);
	}
	
	/**
	 * 입력한 댓글 정보를 DB에서 update시키는 메소드
	 */
	@Override
	public void updateReply(BoardReplyVO rvo) throws Exception {
		boardReplyDao.updateReply(rvo);
	}

	/**
	 * 댓글 정보를 모두 받아오는 메소드
	 * 현재 미구현 상태
	 */
	@Override
	public List<?> getAllBoard() throws Exception {
		return null;
	}
	
	/**
	 * 글을 삭제시 달린 댓글 모두 삭제하는 메소드
	 */
	@Override
	public void deleteReplyList(int no) throws Exception {
		boardReplyDao.deleteReplyList(no);
	}

}
